基本概念
DispatcherServlet:这个就类似于前端分发器。用于分发前端的请求到具体的Controller。然后获取数据到前端。
Controller:就是控制层。
HandlerAdapter:Handler是DispacherServlet使用的,是controller的一个表现形式。我们的DispatcherServlet调用Controller就是以调用Handle来调用的,而HanDlerAdapter则是将不同类型的类适配为我们这个DispacherServlet可以使用的类。
handleInterceptor:就是拦截器,就是在Handle上加上一些拦截器。
HandleMapping:顾名思义,Handle是DispacherServlet调用Controller的一个过渡中间对象,那么这个就是前段访问对应那个Controller。以及这个Controller的拦截器。
HandlerExecutionChain:调用的Controller按照拦截器的模式前置拦截,以及后置拦截器等拦截器的链条。
ModelAndView:这就是model的显示类型。
ViewResolve:视图解析器。根据配置找到确切的视图对象告诉DispacherServlet。
View:界面显示。
请求从浏览器发送经过DispacherServlet的HandleMapping找到对应的Controller以及其拦截器。从而生成一个Handle给DispacherServlet,让其调用,生成一个model就是数据模型,然后DispacherServlet调用ViewResolve找到view,吧数据model注入进去,并且把这个view返回给Response。
配置解析
web.xml文件解析。
这个文件是用来加载初始化信息的,当服务容器开始启动时,先加载web.xml文件。里面的元素配置信息加载顺序为:context-param>listener>filter>servlet
第一步,获取到context-param的值,然后创建这个web项目的上下文,然后创建listener的实例,从而获取到相关信息。最后则是加载filter的实例。
web.xml文件启动大致分为2个部分。
ContextLoad而Listener的初始化,实例化话ioc,并且将这个ioc注册到application中。
DispacherServlet的初始化。
我们知道Spring容器加载配置文件后,会生成一个上下文,而springmvc加载配置文件后也会生成一个上下文,为什么这样划分呢???这样的,我们的应用可能给不同类型的人分发请求,那么就会有多个DispacherServlet,呢么就有多个上下文,而spring的上下文则是公共的,那么就会少加载初始化一些类。
拦截器
这里配置多个拦截器如下所示。
demo样例
可以自己下载运行调试。
点我一下就到了